package com.gjx.leetcode;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


//49. 字母异位词分组
//
//给定一个字符串数组，将字母异位词组合在一起。字母异位词指字母相同，但排列不同的字符串。
//
//示例:
//
//输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
//输出:
//[
//  ["ate","eat","tea"],
//  ["nat","tan"],
//  ["bat"]
//]
//说明：
//
//所有输入均为小写字母。
//不考虑答案输出的顺序。


public class Solution049 {
	public List<List<String>> groupAnagrams(String[] strs) {
        
		Map<String, List<String>> map = new HashMap<>();
		
		for (String str : strs) {
			
			char[] c = str.toCharArray();
			Arrays.sort(c);
			String temp = new String(c);
			
			if (!map.containsKey(temp)) {
				map.put(temp, new ArrayList<>());
			}
			map.get(temp).add(str);
			
		}
		
		List<List<String>> res = new ArrayList<>();
		for (Map.Entry<String, List<String>> entry : map.entrySet()) {
			res.add(entry.getValue());
		}
		
		return res;
    }
}
